package com.example.design.结构型设计模式.代理模式;

// 接着，我们创建一个代理类 ShoppingProxy，它也实现了 Shopping 接口，并在调用购买方法之前和之后添加额外的功能，比如记录日志。
public class ShoppingProxy implements Shopping {
    private final RealShopping realShopping;

    public ShoppingProxy() {
        this.realShopping = new RealShopping();
    }

    @Override
    public void purchase(String item) {
        // 记录购买请求
        System.out.println("Logging: User is attempting to purchase " + item);

        // 调用实际购买逻辑
        realShopping.purchase(item);

        // 记录购买完成
        System.out.println("Logging: Purchase completed for " + item);
    }
}

// 接着，我们创建一个代理类 ShoppingProxy，它也实现了 Shopping 接口，并在调用购买方法之前和之后添加额外的功能，比如记录日志。